package uc;

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import cn.onekit.android.ACTIVITY;

public class IconGridView extends DragGridView {

	/** 
	 */

	public IconGridView(Context context, AttributeSet attrs) {
		super(context, attrs);

	}

	public IconGridView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	private int lastScrollDelta = 0;

	public void resume() {
		overScrollBy(0, -lastScrollDelta, 0, getScrollY(), 0, getScrollRange(), 0, 0, true);
		lastScrollDelta = 0;
	}

	int mTop = 0;

	/**
	 * 将targetView滚到最顶端
	 */
	public void scrollTo(View targetView) {

		int oldScrollY = getScrollY();
		int top = targetView.getTop() - mTop;
		int delatY = top - oldScrollY;
		lastScrollDelta = delatY;
		overScrollBy(0, delatY, 0, getScrollY(), 0, getScrollRange(), 0, 0, true);
	}

	private int getScrollRange() {
		int scrollRange = 0;
		if (getChildCount() > 0) {
			View child = getChildAt(0);
			scrollRange = Math.max(0, child.getHeight() - (getHeight()));
		}
		return scrollRange;
	}

	int currentY;

	@Override
	public boolean onInterceptTouchEvent(MotionEvent ev) {
		if (checkTouch(ev)) {
			return true;
		}
		if (parentScrollView == null) {
			return super.onInterceptTouchEvent(ev);
		} else {
			if (ev.getAction() == MotionEvent.ACTION_DOWN) {
				// 将父scrollview的滚动事件拦截
				currentY = (int) ev.getY();
				setParentScrollAble(false);
				return super.onInterceptTouchEvent(ev);
			} else if (ev.getAction() == MotionEvent.ACTION_UP) {
				// 把滚动事件恢复给父Scrollview
				setParentScrollAble(true);
			} else if (ev.getAction() == MotionEvent.ACTION_MOVE) {
			}
		}
		return super.onInterceptTouchEvent(ev);

	}

	@SuppressLint("ClickableViewAccessibility")
	@Override
	public boolean onTouchEvent(MotionEvent ev) {
		if (_isDrag) {
			return super.onTouchEvent(ev);
		}
		if (this.getChildCount() > 0) {
			View child = getChildAt(0);
			if (parentScrollView != null) {
				if (ev.getAction() == MotionEvent.ACTION_MOVE) {
					int height = child.getMeasuredHeight();
					height = height - getMeasuredHeight();

					// System.out.println("height=" + height);
					int scrollY = getScrollY();
					// System.out.println("scrollY" + scrollY);
					int y = (int) ev.getY();

					// 手指向下滑动
					if (currentY < y) {
						if (scrollY <= 0) {
							// 如果向下滑动到头，就把滚动交给父Scrollview
							setParentScrollAble(true);
							return false;
						} else {
							setParentScrollAble(false);

						}
					} else if (currentY > y) {
						if (scrollY >= height) {
							// 如果向上滑动到头，就把滚动交给父Scrollview
							setParentScrollAble(true);
							return false;
						} else {
							setParentScrollAble(false);

						}

					}
					currentY = y;
				}
			}
		}
		return super.onTouchEvent(ev);
	}

	public void updateHeight() {
		IconGridViewAdapter adapter = (IconGridViewAdapter) this.getAdapter();
		ViewGroup.LayoutParams layoutParams = this.getLayoutParams();
		layoutParams.height = ACTIVITY.dp2px(adapter.mini ? IconView.MINI_HEIGHT : IconView.HEIGHT)
				* (int) Math.ceil(adapter.getCount() / 4.0);
		this.setLayoutParams(layoutParams);
	}
}
